#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>

char* myerror[] = {
"success",
"error1",
"error2",
"unknown error",

};

void show()
{
    for (int i = 0; i < 5; ++i)
        printf("show()");
    //_exit(5);
    exit(5);
    //return ;
}

int main()
{
    // 进程的异常终止本身是进程收到相关信号
    
//    printf("I am a process, pid : %d\n", getpid());
//    sleep(3600);
//    printf("Before show()\n");
//    show();
//    printf("After show()\n");

 
    // 变量errno的验证
    // 试着开辟一块非常大的空间
    char* mem = (char*)malloc(1000 * 1000 * 1000 * 2);
    if (NULL == mem)
    {
//        printf("malloc fail\n");
//        printf("errno : %d, %s\n", errno, strerror(errno));
        perror("malloc"); // 使用perror       
    }
    else
    {
        printf("malloc success\n");
    }
//
//    sleep(300);


    // 自己可以定义自己的错误码
//    for (int i = 0; i < 4; ++i)
//        printf("%s\n", myerror[i]);

//    printf("hello world!\n");
//    // 查看系统提供的错误码对应的信息
//    for (int i = 0; i <= 200; ++i)
//        printf("%s\n", strerror(i));



//  // 课后作业，计算有多少个进程被创建
//    fork();
//    fork() && fork() || fork();
//    fork();
//    sleep(300);
    return 0;
}
